# assert 断言
# def add(a,b):
#     return a+b
#
# def test_001():
#     print("测试输入的两个整数结果是否正确")
#     assert add(2,3) == 7
#     print("测试结束")
#
# def test_002():
#     print("测试输入的两个小数结果是否正确")
#     assert add(3.4,5.6) == 9.0
#     print("测试结束")
#
# def test_003():
#     print("测试输入的两个字符串结果是否正确")
#     assert add("hello","world") == "9.0"
#     print("测试结束")

# 方法的前置后置
# # 模块级别前置后置
# def setup_module():
#     print("模块打开浏览器")
# def teardown_module():
#     print("模块关闭浏览器")
# # 函数级别前置后置
# def setup_function():
#     print("函数登录")
# def teardown_function():
#     print("函数退出登录")
# # 测试用例
# def test_adduser():
#     print("添加成员模块")
# def test_deluser():
#     print("删除成员模块")
# class Test001:
#     # 类级别前置后置
#     def setup_class(self):
#         print("类打开网页")
#     def teardown_class(self):
#         print("类退出网页")
#     # 方法级别前置后置
#     def setup_mothod(self):
#         print("方法点击方法")
#     def teardown_mothod(self):
#         print("方法回退")
#     def test_add(method):
#         print("添加成员")

# fixture装饰器
# import pytest
#
# @pytest.fixture
# def login():
#     print("打开浏览器")
#     print("登录")
#     # 测试模块的方法
#     yield
#     print("退出登录")
#     print("关闭浏览器")
#
# def test_add(login): # 形参为装饰器定义的函数
#     print("添加用户")
#
# def test_del(login):
#     print("删除用户")
#
# def test_change():  # 该方法就可以不执行前置和后置了
#     print("修改用户")

# fixture四种级别
import pytest

@pytest.fixture(scope="module")
def browser():
    print("打开浏览器")

    # 测试模块的方法
    yield

    print("关闭浏览器")

def test_add(browser): # 形参为装饰器定义的函数
    print("添加用户")

def test_del(browser):
    print("删除用户")

class Test002:
    @pytest.fixture(scope="class")
    def login1(self):

        print("登录1")
        # 测试模块的方法
        yield
        print("退出登录1")

    def test_001(self,login1,browser): # 使用两个前后置定义的函数
        print("-------测试模块-----")